#include <string>
#include <vector>
#include <mutex>
#include <nlohmann/json.hpp>

class LowAltitudeDataStorage {
private:
    std::mutex data_mutex_;  // 保证线程安全
    std::vector<nlohmann::json> station_data_;  // 存储站点信息
    std::vector<nlohmann::json> drone_data_;    // 存储无人机信息

public:
    // 存储站点信息
    void storeStationData(const nlohmann::json& data) {
        std::lock_guard<std::mutex> lock(data_mutex_);
        station_data_.push_back(data);
    }

    // 存储无人机信息
    void storeDroneData(const nlohmann::json& data) {
        std::lock_guard<std::mutex> lock(data_mutex_);
        drone_data_.push_back(data);
    }

    // 获取所有站点信息
    std::vector<nlohmann::json> getAllStationData() {
        std::lock_guard<std::mutex> lock(data_mutex_);
        return station_data_;
    }

    // 获取所有无人机信息
    std::vector<nlohmann::json> getAllDroneData() {
        std::lock_guard<std::mutex> lock(data_mutex_);
        return drone_data_;
    }

    // 获取最新站点信息
    nlohmann::json getLatestStationData() {
        std::lock_guard<std::mutex> lock(data_mutex_);
        if (station_data_.empty()) {
            return nlohmann::json();
        }
        return station_data_.back();
    }

    // 获取最新无人机信息
    nlohmann::json getLatestDroneData() {
        std::lock_guard<std::mutex> lock(data_mutex_);
        if (drone_data_.empty()) {
            return nlohmann::json();
        }
        return drone_data_.back();
    }

    // 清空所有数据
    void clearAllData() {
        std::lock_guard<std::mutex> lock(data_mutex_);
        station_data_.clear();
        drone_data_.clear();
    }

    // 清空站点数据
    void clearStationData() {
        std::lock_guard<std::mutex> lock(data_mutex_);
        station_data_.clear();
    }

    // 清空无人机数据
    void clearDroneData() {
        std::lock_guard<std::mutex> lock(data_mutex_);
        drone_data_.clear();
    }
};